package com.tiancheng.trade.payment.bo.notify;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;

/***
 * 拉卡拉支付回调消息
 */
@Data
public class LklPayNotifyBO {
    /** 商户号 - 拉卡拉分配的商户号（交易请求接口中商户号） */
    @JsonProperty("merchant_no")
    private String merchantNo;

    /** 商户交易流水号 */
    @JsonProperty("out_trade_no")
    private String outTradeNo;

    /** 拉卡拉交易流水号 */
    @JsonProperty("trade_no")
    private String tradeNo;

    /** 拉卡拉对账单流水号 - trade_no的后14位 */
    @JsonProperty("log_no")
    private String logNo;

    /** 账户端交易订单号 */
    @JsonProperty("acc_trade_no")
    private String accTradeNo;

    /** 钱包类型 - 微信：WECHAT 支付宝：ALIPAY 银联：UQRCODEPAY 翼支付: BESTPAY 苏宁易付宝: SUNING 数字人民币-DCPAY */
    @JsonProperty("account_type")
    private String accountType;

    /** 结算商户号 - 拉卡拉分配的商户号 */
    @JsonProperty("settle_merchant_no")
    private String settleMerchantNo;

    /** 结算终端号 - 拉卡拉分配的业务终端号 */
    @JsonProperty("settle_term_no")
    private String settleTermNo;

    /** 交易状态 - INIT-初始化 CREATE-下单成功 SUCCESS-交易成功 FAIL-交易失败 DEAL-交易处理中 UNKNOWN-未知状态 CLOSE-订单关闭 PART_REFUND-部分退款 REFUND-全部退款 REVOKED-订单撤销 */
    @JsonProperty("trade_status")
    private String tradeStatus;

    /** 订单金额 - 单位分，整数数字型字符 */
    @JsonProperty("total_amount")
    private String totalAmount;

    /** 付款人实付金额 - 单位分 */
    @JsonProperty("payer_amount")
    private String payerAmount;

    /** 账户端结算金额 - 单位分，账户端应结订单金额=付款人实际发生金额+账户端优惠金额 */
    @JsonProperty("acc_settle_amount")
    private String accSettleAmount;

    /** 商户侧优惠金额（账户端） - 单位分 */
    @JsonProperty("acc_mdiscount_amount")
    private String accMdiscountAmount;

    /** 账户端优惠金额 - 单位分 */
    @JsonProperty("acc_discount_amount")
    private String accDiscountAmount;

    /** 账户端其它优惠金额 - 单位分 */
    @JsonProperty("acc_other_discount_amount")
    private String accOtherDiscountAmount;

    /** 交易完成时间 - yyyyMMddHHmmss */
    @JsonProperty("trade_time")
    private String tradeTime;

    /** 用户标识1 - 微信sub_open_id, 支付宝buyer_logon_id（买家支付宝账号） */
    @JsonProperty("user_id1")
    private String userId1;

    /** 用户标识2 - 微信openId,支付宝buyer_user_id,银联user_id */
    @JsonProperty("user_id2")
    private String userId2;

    /** 活动 ID - 在账户端商户后台配置的批次 ID */
    @JsonProperty("acc_activity_id")
    private String accActivityId;

    /** 付款银行 */
    @JsonProperty("bank_type")
    private String bankType;

    /** 银行卡类型 - 00：借记 01：贷记 02：微信零钱 03：支付宝花呗 04：支付宝其他 05：数字货币 06：拉卡拉支付账户 99：未知 */
    @JsonProperty("card_type")
    private String cardType;

    /** 备注 */
    @JsonProperty("remark")
    private String remark;


    /** 子商户号 - 账户端子商户号 */
    @JsonProperty("sub_mch_id")
    private String subMchId;

    /** 合单信息 */
    @JsonProperty("out_split_rsp_infos")
    private List<OutSplitRspInfo> outSplitRspInfos;

    /** 单品券优惠的商品优惠信息 */
    @JsonProperty("discount_goods_detail")
    private String discountGoodsDetail;


    @Data
    public static class OutSplitRspInfo {
        /** 子单拉卡拉流水号 */
        @JsonProperty("sub_trade_no")
        private String subTradeNo;

        /** 子单对账流水号 */
        @JsonProperty("sub_log_no")
        private String subLogNo;

        /** 子单外部流水号 */
        @JsonProperty("out_sub_trade_no")
        private String outSubTradeNo;

        /** 子单商户号 */
        @JsonProperty("merchant_no")
        private String merchantNo;

        /** 子单终端号 */
        @JsonProperty("term_no")
        private String termNo;

        /** 子单金额 - 单位：分 */
        @JsonProperty("amount")
        private String amount;
    }
}
